<?php

    #-------------------------------------------------------------#
	# This file is part of the Tekuna MVC Microframework for PHP. #
	# (c) 2009 Niels Jäckel <niels.jaeckel@tekuna.org>            #
	# Please visit http://tekuna.org/ for more information.       #
	#                                                             #
	# This software is licensed under the MIT License. Please     #
	# view the LICENSE file for the full text of this license.    #
    #-------------------------------------------------------------#


	Tekuna :: load('org.tekuna.core.mvc.TekunaController');
	Tekuna :: load('org.tekuna.core.mvc.TekunaView');
	Tekuna :: load('org.tekuna.core.i18n.TekunaTranslator');
	Tekuna :: load('org.tekuna.core.mvc.TekunaModel');


	/**
	 * This interface enhances the TekunaController interface with
	 * some MVC-specific methods.
	 */

	interface TekunaMVCController extends TekunaController {


		/**
		 * Redirect to another controller and take its output
		 * in place of the output of this controller
		 *
		 * @param string $sControllerSpecification
		 *        the controller specification that points to another
		 *        controller in the application scope. For more information
		 *        see the TekunaApplication :: getApplicationControllerInstance() method
		 */

		public function redirect($sControllerSpecification);


		/**
		 * Set the view that is used with this controller
		 *
		 * @param TekunaView $objView the new view
		 */

		public function useView(TekunaView $objView);


		/**
		 * Set the translator that is used to translated the output of the view
		 *
		 * @param TekunaTranslator $objTranslator the new translator
		 */

		public function useTranslator(TekunaTranslator $objTranslator);


		/**
		 * Set the model that is used with this controller
		 *
		 * @param TekunaModel $objModel the new model
		 */

		public function useModel(TekunaModel $objModel);


		/**
		 * @return TekunaView returns the currently used view
		 */

		public function getView();


		/**
		 * @return TekunaTranslator returns the current translator instance
		 */

		public function getTranslator();


		/**
		 * @return TekunaModel returns the currently used model
		 */

		public function getModel();

	}

